package com.syh.jn.scm.service.api.supplier.logistics;

import com.syh.jn.scm.dto.supplier.base.logistics.LogisticsVo;
import com.syh.jn.scm.dto.supplier.logistics.LogisticsBillItemVo;
import com.syh.jn.scm.dto.supplier.logistics.LogisticsBillMto;
import com.syh.jn.scm.dto.supplier.logistics.LogisticsBillSto;
import com.syh.jn.scm.dto.supplier.logistics.LogisticsBillVo;
import com.syh.jn.scm.service.core.BaseService;

import java.util.List;

/**
 * Created by soci.song on 2018/11/2.
 */
public interface LogisticsBillService extends BaseService<LogisticsBillSto, LogisticsBillMto, LogisticsBillVo, Long> {

  /**
   * 根据物流单id获取订单项
   */
  List<LogisticsBillItemVo> getItemsByLogisticsBillId(Long id);

  /**
   * 物流单据确认收货
   *
   * @param id
   */
  void collect(Long id, Long depotId, Long storageTimestamp);

  /**
   * 物流单据确认发货
   *
   * @param id
   * @param deliveryTimestamp 发货时间
   */
  void delivery(Long id, Long deliveryTimestamp);

  /**
   * 物流单据取消
   *
   * @param id
   */
  void cancel(Long id);

  /**
   * 取消签收
   *
   * @param id
   */
  void cancelReceipt(Long id);

  /**
   * 物流单据删除
   *
   * @param id
   */
  void remove(Long id);

  /**
   * 直采直销修改运费承担方
   *
   * @param id   物流单id
   * @param type 运费承担方式  1、卖家承担 2、预收买家 3、买家到付
   */
  void changeFreightType(Long id, Short type);

  /**
   * 根据订单获取所有的物流单据
   *
   * @param id
   * @param orderType
   * @return
   */
  List<LogisticsBillVo> getLogisticsBillVosByOrderId(Long id, Short orderType);

}
